Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / frontend / BootLoadSmoothness.test.js

Displaying Raw • Download


tests/frontend/BootLoadSmoothness.test.js bce42bcdce0e7d2c6d78228e864a4cd1d974cc82 (bce42bcd) Text, 5.49 KB

Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3afterEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3readFileSync Tb4b4b4} Tff7b72from Ta5d6ff"node:fs"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3resolve Tb4b4b4} Tff7b72from Ta5d6ff"node:path"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3MESHCHAT_THEME_VARIABLES_LIGHTTb4b4b4,
Te6edf3MESHCHAT_THEME_VARIABLES_DARKTb4b4b4,
Te6edf3injectMeshchatThemeVariablesTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../meshchatx/src/frontend/theme/designTokens.js"Tb4b4b4;

Tff7b72const Te6edf3ROOT Tff7b72= Te6edf3resolveTb4b4b4(Tff7b72importTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3dirnameTb4b4b4, Ta5d6ff"../.."Tb4b4b4)Tb4b4b4;

Te6edf3describeTb4b4b4(Ta5d6ff"boot and load smoothness"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3headTb4b4b4.Te6edf3innerHTML Tff7b72= Ta5d6ff""Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3innerHTML Tff7b72= Ta5d6ff""Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3headTb4b4b4.Te6edf3innerHTML Tff7b72= Ta5d6ff""Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3innerHTML Tff7b72= Ta5d6ff""Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"index.html uses canvas-colored body instead of gray-100 flash"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3html Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"meshchatx/src/frontend/index.html"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3bootTheme Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"meshchatx/src/frontend/public/boot-theme.js"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/body class="bg-gray-100"/Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"background-color: #f8fafc"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"background-color: #09090b"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'src="/boot-theme.js"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script(?![^>]*\bsrc=)[^>]*>/Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3bootThemeTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"meshchatx_ui_theme"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3bootThemeTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"getPreferredUiTheme"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'id="meshchatx-boot-splash"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'id="app"'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"style.css paints html/body/#app with semantic canvas"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3css Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"meshchatx/src/frontend/style.css"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3cssTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"background-color: var(--mc-canvas"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3cssTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"#app"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3cssTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff".route-view-fade-enter-active"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"main.js defers splash removal and preloads critical routes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3main Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"meshchatx/src/frontend/main.js"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"removeBootSplash"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"requestAnimationFrame"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"preloadCriticalRouteChunks"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'import("./components/messages/MessagesPage.vue")'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"App.vue fades non-keepAlive route swaps on canvas background"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3app Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"meshchatx/src/frontend/components/App.vue"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3appTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'name="route-view-fade"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3appTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"bg-sem-canvas"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3appTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"setUiTheme"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3appTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"meshchatx_ui_theme"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"Android theme and WebView use meshchat canvas color"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3colors Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"android/app/src/main/res/values/colors.xml"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3themes Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"android/app/src/main/res/values/themes.xml"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3layout Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"android/app/src/main/res/layout/activity_main.xml"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3activity Tff7b72= Te6edf3readFileSyncTb4b4b4(
Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"android/app/src/main/java/com/meshchatx/MainActivity.java"Tb4b4b4)Tb4b4b4,
Ta5d6ff"utf8"
Tb4b4b4)Tb4b4b4;

Te6edf3expectTb4b4b4(Te6edf3colorsTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"meshchat_canvas"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3colorsTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"#FF09090B"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3colorsTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"meshchat_canvas_light"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3colorsTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"#FFF8FAFC"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3themesTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"android:windowBackground"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3layoutTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"@color/meshchat_canvas"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3activityTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"applyShellCanvasTheme"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3activityTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"setUiTheme"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3activityTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"setLocalNightMode"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"injectMeshchatThemeVariables keeps light/dark canvas tokens aligned"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3injectMeshchatThemeVariablesTb4b4b4(Tffa657documentTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3style Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"meshchat-design-tokens"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3styleTb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3styleTb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Te6edf3MESHCHAT_THEME_VARIABLES_LIGHTTb4b4b4[Ta5d6ff"--mc-canvas"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3styleTb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Te6edf3MESHCHAT_THEME_VARIABLES_DARKTb4b4b4[Ta5d6ff"--mc-canvas"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MESHCHAT_THEME_VARIABLES_LIGHTTb4b4b4[Ta5d6ff"--mc-canvas"Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#f8fafc"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MESHCHAT_THEME_VARIABLES_DARKTb4b4b4[Ta5d6ff"--mc-canvas"Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#09090b"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3itTb4b4b4(Ta5d6ff"removeBootSplash fades then removes without leaving white gap"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3useFakeTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3splash Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3splashTb4b4b4.Te6edf3id Tff7b72= Ta5d6ff"meshchatx-boot-splash"Tb4b4b4;
Te6edf3splashTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"aria-busy"Tb4b4b4, Ta5d6ff"true"Tb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3splashTb4b4b4)Tb4b4b4;

Tff7b72function Te6edf3removeBootSplashTb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3el Tff7b72|| Tff7b72!Te6edf3elTb4b4b4.Te6edf3isConnectedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3elTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"aria-busy"Tb4b4b4, Ta5d6ff"false"Tb4b4b4)Tb4b4b4;
Te6edf3elTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3transition Tff7b72= Ta5d6ff"opacity 140ms ease"Tb4b4b4;
Te6edf3elTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3opacity Tff7b72= Ta5d6ff"0"Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3elTb4b4b4.Te6edf3isConnectedTb4b4b4) Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4, T79c0ff160Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3removeBootSplashTb4b4b4(Te6edf3splashTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3splashTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"aria-busy"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"false"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3splashTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3opacityTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"meshchatx-boot-splash"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3viTb4b4b4.Te6edf3advanceTimersByTimeTb4b4b4(T79c0ff160Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"meshchatx-boot-splash"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3useRealTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────